package com.xd.core.debt.vo;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.util.Date;

/**
 * <p>
 * 债权管理分页返回vo
 * </p>
 *
 * @author ZCH
 * @since 2025/02/27/10:53
 */
@Data
@Accessors(chain = true)
public class DebtPageVo {

    @ApiModelProperty(value = "	债权id")
    @ExcelIgnore
    private Integer id;

    @ApiModelProperty(value = "借款合同编号")
    @ExcelProperty(value = "借款合同编号")
    private String contractNo;

    @ApiModelProperty(value = "客户姓名")
    @ExcelProperty(value = "客户姓名")
    private String name;

    @ApiModelProperty(value = "客户手机号")
    @ExcelProperty(value = "客户手机号")
    private String phone;

    @ApiModelProperty(value = "投资机构名称")
    @ExcelProperty(value = "投资机构名称")
    private String companyName;

    @ApiModelProperty(value = "产品名称")
    @ExcelProperty(value = "产品名称")
    private String productName;

    @ApiModelProperty(value = "产品类型 0-消费信贷 1-车抵贷 2-房抵贷 3-经营贷 4--保单贷")
    @ExcelProperty(value = "产品类型")
    @ExcelIgnore
    private String type;

    @ApiModelProperty(value = "产品类型 0-消费信贷 1-车抵贷 2-房抵贷 3-经营贷 4--保单贷")
    @ExcelProperty(value = "产品类型")
    private String typeRemark;

    @ApiModelProperty(value = "申请体现金额")
    @ExcelProperty(value = "申请体现金额")
    private BigDecimal outLoan;

    @ApiModelProperty(value = "放款金额")
    @ExcelProperty(value = "放款金额")
    private BigDecimal outAmount;

    @ApiModelProperty(value = "订单状态  1:还款中 2:已结清 3:已逾期")
    @ExcelProperty(value = "订单状态")
    @ExcelIgnore
    private String status;

    @ApiModelProperty(value = "订单状态  1:还款中 2:已结清 3:已逾期")
    @ExcelProperty(value = "订单状态")
    private String statusRemark;

    @ApiModelProperty(value = "债转状态  1:未转让 2:转让中 3:已转让")
    @ExcelProperty(value = "债转状态")
    @ExcelIgnore
    private String debtConversionStatus;

    @ApiModelProperty(value = "债转状态  1:未转让 2:转让中 3:已转让")
    @ExcelProperty(value = "债转状态")
    private String debtConversionStatusRemark;

    @ApiModelProperty(value = "公证执行书申请状态 0:未办理 1:办理申请中 2:办理完成")
    @ExcelProperty(value = "公证执行书申请状态")
    @ExcelIgnore
    private String certificationStatus;

    @ApiModelProperty(value = "公证执行书申请状态 0:未办理 1:办理申请中 2:办理完成")
    @ExcelProperty(value = "公证执行书申请状态")
    private String certificationStatusRemark;

    @ApiModelProperty(value = "最近还款日期")
    @JsonFormat(pattern = "yyyy-MM-dd", shape = JsonFormat.Shape.STRING, timezone = "GMT+8")
    @ExcelProperty(value = "最近还款日期")
    @DateTimeFormat("yyyy-MM-dd")
    private Date latestRepaymentDate;

    @ApiModelProperty(value = "剩余还款期数")
    @ExcelProperty(value = "剩余还款期数")
    private String remainingRepaymentPeriods;

    @ApiModelProperty(value = "年化利率")
    @ExcelProperty(value = "年化利率")
    private String rate;

    @ApiModelProperty(value = "应还本金")
    @ExcelProperty(value = "应还本金")
    private BigDecimal shouldRepayPrincipal;

    @ApiModelProperty(value = "应还利息")
    @ExcelProperty(value = "应还利息")
    private BigDecimal shouldRepayInterest;

    @ApiModelProperty(value = "剩余应还本金")
    @ExcelProperty(value = "剩余应还本金")
    private BigDecimal remainingShouldRepayPrincipal;

    @ApiModelProperty(value = "剩余应还利息")
    @ExcelProperty(value = "剩余应还利息")
    private BigDecimal remainingShouldRepayInterest;

    @ApiModelProperty(value = "罚息")
    @ExcelProperty(value = "罚息")
    private BigDecimal defaultInterestTodo;

    @ApiModelProperty(value = "逾期利息")
    @ExcelProperty(value = "逾期利息")
    private BigDecimal overdueInterest;

    @ApiModelProperty(value = "违约金")
    @ExcelProperty(value = "违约金")
    private BigDecimal currentRepaymentPenalty;

    @ApiModelProperty(value = "借款方式 0:等额本金 1:等额本息 2:等本等息 3:到期还本付息 4:先息后本")
    @ExcelProperty(value = "借款方式")
    @ExcelIgnore
    private String loanMethod;

    @ApiModelProperty(value = "借款方式 0:等额本金 1:等额本息 2:等本等息 3:到期还本付息 4:先息后本")
    @ExcelProperty(value = "借款方式")
    private String loanMethodRemark;

    @ApiModelProperty(value = "贷款用途")
    @ExcelProperty(value = "贷款用途")
    private String loanPurpose;

    @ApiModelProperty(value = "债权是否代收(0--代收,1--不代收)")
    @ExcelProperty(value = "是否代扣")
    @ExcelIgnore
    private String isWithhold;

    @ApiModelProperty(value = "债权是否代收(0--代收,1--不代收)")
    @ExcelProperty(value = "是否代扣")
    private String isWithholdRemark;

    @ApiModelProperty(value = "现债权方")
    @ExcelProperty(value = "现债权方")
    private String originalCreditor;

    @ApiModelProperty(value = "原债权方")
    @ExcelProperty(value = "原债权方")
    private String oldOriginalCreditor;

    @ApiModelProperty(value = "债权是否释放(0--否,1--是)")
    @ExcelIgnore
    private String isReleased;

    @ApiModelProperty(value = "进件id")
    @ExcelIgnore
    private Integer incomingId;

    @ApiModelProperty(value = "争议方式(1--公证,2--仲裁,3--诉讼)")
    @ExcelIgnore
    private String controversy;

    @ApiModelProperty(value = "是否提前还款 0--否,1--是")
    @ExcelIgnore
    private String isEarly;

    @ApiModelProperty("企业ID")
    @ExcelIgnore
    private Integer companyId;

    @ApiModelProperty(value = "实际到账日期")
    @ExcelProperty(value = "实际到账日期")
    @DateTimeFormat("yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", shape = JsonFormat.Shape.STRING, timezone = "GMT+8")
    private Date disbursementDate;

    @ApiModelProperty("放款ID")
    @ExcelIgnore
    private Integer outId;

    @ApiModelProperty(value = "付款通道(1-通道一，2-通道二)")
    @ExcelProperty(value = "付款通道")
    private String payPass;

    @ApiModelProperty(value = "投保公司名称")
    @ExcelIgnore
    private String insuranceCompanyName;

    @ApiModelProperty(value = "资方代扣开关 0:代扣 1:不代扣")
    private String withholdSwitch;
}
